﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using MJM.RPP.EntidadesNegocio;

namespace MJM.RPP.AccesoDatos
{
    public class UsuarioAD
    {
        public int Registrar(UsuarioE obj)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_WEB_T_MAES_USUPAD_Inserta", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUsuario, prmIDPersona, prmClave, prmFechaReg, prmEliminado,prmIDConfirmacion,prmUserConfirmacion;
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@USUPAD_P_chUSU";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = obj.Usuario;

                prmIDPersona = cmd.CreateParameter();
                prmIDPersona.ParameterName = "@PAD_P_chIDPER";
                prmIDPersona.SqlDbType = SqlDbType.VarChar;
                prmIDPersona.Value = obj.IDPersona;

                prmClave = cmd.CreateParameter();
                prmClave.ParameterName = "@USUPAD_chPASS";
                prmClave.SqlDbType = SqlDbType.VarChar;
                prmClave.Value = obj.Pass;

                prmFechaReg = cmd.CreateParameter();
                prmFechaReg.ParameterName = "@USUPAD_dtFECREG";
                prmFechaReg.SqlDbType = SqlDbType.DateTime;
                prmFechaReg.Value = obj.FechaRegistro;

                prmEliminado = cmd.CreateParameter();
                prmEliminado.ParameterName = "@USUPAD_inFLAELI";
                prmEliminado.SqlDbType = SqlDbType.Int;
                prmEliminado.Value = obj.Eliminado;

                prmUserConfirmacion = cmd.CreateParameter();
                prmUserConfirmacion.ParameterName = "@USUPAD_chUSERACT";
                prmUserConfirmacion.SqlDbType = SqlDbType.VarChar;
                prmUserConfirmacion.Value = obj.UserConfirmacion;

                prmIDConfirmacion = cmd.CreateParameter();
                prmIDConfirmacion.ParameterName = "@USUPAD_chIDACT";
                prmIDConfirmacion.SqlDbType = SqlDbType.VarChar;
                prmIDConfirmacion.Value = obj.IDConfirmacion;

                cmd.Parameters.Add(prmUsuario);
                cmd.Parameters.Add(prmIDPersona);
                cmd.Parameters.Add(prmFechaReg);
                cmd.Parameters.Add(prmEliminado);
                cmd.Parameters.Add(prmUserConfirmacion);
                cmd.Parameters.Add(prmIDConfirmacion);
                cmd.Parameters.Add(prmClave);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                return 0;
            }
            return 1;
        }

        public int ValidarUsuario(String Usuario)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_WEB_T_MAES_USUPAD_Existe", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUsuario;
            SqlDataReader dr;
            int cont = 0;
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@Usuario";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = Usuario;

                cmd.Parameters.Add(prmUsuario);
                cmd.Connection.Open();
                dr=cmd.ExecuteReader();                
                while (dr.Read())
                {
                    cont++;
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                return cont;
            }
            return cont;
        }

        public UsuarioE ValidarCuenta(string UserConfirm,string IDConfirm)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_WEB_T_MAES_USUPAD_Confirma", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUser;
            SqlParameter prmID;
            SqlDataReader dr;            
            UsuarioE miuser=null;
            try
            {
                prmUser = cmd.CreateParameter();
                prmUser.ParameterName = "@UserConfirm";
                prmUser.SqlDbType = SqlDbType.VarChar;
                prmUser.Value = UserConfirm;
               // prmUser.Value = "21f69f9592b2191ef8a5b6433979b64e";
                prmID = cmd.CreateParameter();
                prmID.ParameterName = "@IDConfirm";
                prmID.SqlDbType = SqlDbType.VarChar;
                prmID.Value = IDConfirm;
             //   prmID.Value= "52935832a1faca6e0c03e2b06c7d0647";

                cmd.Parameters.Add(prmUser);
                cmd.Parameters.Add(prmID);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    miuser = new UsuarioE();
                    miuser.Eliminado = dr.GetInt32(dr.GetOrdinal("USUPAD_inFLAELI"));
                    miuser.Usuario = dr.GetString(dr.GetOrdinal("USUPAD_P_chUSU"));
                    miuser.Pass = dr.GetString(dr.GetOrdinal("USUPAD_chPASS"));
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                return miuser;
            }
            return miuser;
        }

        public void ActualizaEstado(UsuarioE obj)
        { 
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_MAES_USUPAD_Actualiza", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUsuario, prmClave, prmEliminado;
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@USUPAD_P_chUSU";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = obj.Usuario;

                prmClave = cmd.CreateParameter();
                prmClave.ParameterName = "@USUPAD_chPASS";
                prmClave.SqlDbType = SqlDbType.VarChar;
                prmClave.Value = obj.Pass;

                prmEliminado = cmd.CreateParameter();
                prmEliminado.ParameterName = "@USUPAD_inFLAELI";
                prmEliminado.SqlDbType = SqlDbType.Int;
                prmEliminado.Value = obj.Eliminado;

                cmd.Parameters.Add(prmUsuario);
                cmd.Parameters.Add(prmClave);
                cmd.Parameters.Add(prmEliminado);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();                
            }
            
        }

        public String ObtenerIDPerLog(string usuario,string clave)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_WEB_T_MAES_USUPAD_ValUsuaClave", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUsuario, prmClave;
            SqlDataReader dr;
            string IDPER="";
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@Usuario";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = usuario;

                prmClave = cmd.CreateParameter();
                prmClave.ParameterName = "@Clave";
                prmClave.SqlDbType = SqlDbType.VarChar;
                prmClave.Value = clave;

                cmd.Parameters.Add(prmClave);
                cmd.Parameters.Add(prmUsuario);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    IDPER = dr.GetString(dr.GetOrdinal("PAD_P_chIDPER"));
                }
                cmd.Connection.Close();

            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();  
            }
            return IDPER;
        }

        public UsuarioE ObtenerUsuario(String IDPersona)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_MAES_USUPAD_Obtener", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmPersona;
            SqlDataReader dr;            
            UsuarioE objUsuarioE = new UsuarioE();
            try
            {
                prmPersona = cmd.CreateParameter();
                prmPersona.ParameterName = "@vPAD_P_chIDPER";
                prmPersona.SqlDbType = SqlDbType.VarChar;
                prmPersona.Value = IDPersona;
                cmd.Parameters.Add(prmPersona);
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                
                if (dr.Read())
                {
                    objUsuarioE.Eliminado = dr.GetInt32(4);
                    objUsuarioE.IDPersona = dr.GetString(1);
                    objUsuarioE.Pass = dr.GetString(2);
                    objUsuarioE.Usuario = dr.GetString(0);
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();  
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();  
            }
            return objUsuarioE;
        }

        public String ObtenerIDPerTramite(string usuario, string clave)
        {
            string id = "";
            SqlConnection conn = new SqlConnection(Cadena.CadenaTramite());
            SqlCommand cmd = new SqlCommand("sp_s_WEB_M_MAES_USUA_Login", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUsuario, prmClave;
            SqlDataReader dr;
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@vUSUA_chLOGIN";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = usuario;
                cmd.Parameters.Add(prmUsuario);

                prmClave = cmd.CreateParameter();
                prmClave.ParameterName = "@vUSUA_chPASSWORD";
                prmClave.SqlDbType = SqlDbType.VarChar;
                prmClave.Value = clave;
                cmd.Parameters.Add(prmClave);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                if (dr.Read())
                {
                    id = dr.GetString(0);
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return id;
        }

        public int CambiarClaveTramite(string usuario,string clave)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.CadenaTramite());
            SqlCommand cmd = new SqlCommand("sp_u_M_MAES_USUA_ModClave", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUsuario, prmClave;

            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@vUSUA_chLOGIN";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = usuario;
                cmd.Parameters.Add(prmUsuario);

                prmClave = cmd.CreateParameter();
                prmClave.ParameterName = "@vUSUA_chPASSWORD";
                prmClave.SqlDbType = SqlDbType.VarChar;
                prmClave.Value = clave;
                cmd.Parameters.Add(prmClave);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
                codigo = 1;
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
                codigo = 0;
            }
            return codigo; 
        }

        public bool ValidaUsuarioTramite(String Usuario)
        {
            bool encontro=false;
            SqlConnection conn = new SqlConnection(Cadena.CadenaTramite());
            SqlCommand cmd = new SqlCommand("s_s_M_MAES_USUA_LOGIN", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmUsuario;
            SqlDataReader dr;
            try
            {
                prmUsuario = cmd.CreateParameter();
                prmUsuario.ParameterName = "@iUSUA_chLOGIN";
                prmUsuario.SqlDbType = SqlDbType.VarChar;
                prmUsuario.Value = Usuario;
                cmd.Parameters.Add(prmUsuario);
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                if (dr.Read())
                    encontro = true;
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return encontro;
        }
    }
}
